#
1. 物理结构
- MySQL是通过文件系统对数据和索引进行存储的。
MySQL从物理结构上可以分为日志文件和数据索引文件。
MySQL在Linux中的数据索引文件和日志文件都在/var/lib/mysql目录下。
日志文件采用顺序IO方式存储、数据文件采用随机IO方式存储。
2. 日志文件
错误日志文件
默认是开启的,而且从5.5.7以后无法关闭错误日志,错误日志记录了运行过程中遇到的所有严重的错误 信息,以及 MySQL每次启动和关闭的详细信息。位置: /var/log/mysqld.log
二进制日志(bin log)
记录数据变化,binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息。如果是DDL语句,则直接记录到binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中。 生产中开启
主要:用于数据备份,恢复,主从复制。
如果开启呢?
在
/etc/my.cnf
文件中的[mysqld] section中,进行如下配置1
2# bin-log
log-bin=mysql-bin注意: 打开之后,每重启一次mysql服务器,都会创建的一个新的mysql-bin文件
通用查询日志
什么都记录, 耗性能,生产中不开启
慢查询日志
SQL调优 定位慢的select
默认是关闭,需要通过以下方式来进行开启:
1
2
3
4
5
6#开启慢查询日志
slow_query_log=ON
#慢查询的阈值
long_query_time=3
#日志记录文件如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
slow_query_log_file=file_name记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句
重做日志(redo log)
回滚日志 (undo log)
中继日志 (relay log)
查看日志开启情况,使用如下命令:
1 | show variables like 'log_%' |
查看数据文件的位置:
1 | show variables like '%datadir%' |